package edu.qd.learn.newchapter.chapter_thread.day01;


/**
 * 第一个线程
 * 自定义线程  : 继承Thread
 *
 * 线程的第一种创建方式
 * 线程当中的运行  volatile
 * 是否可以在线程运行的状态下，消毁线程
 *
 * @author 布衣
 */
public class FirstThread extends Thread {
    private static volatile int a = 0;


    private static volatile int max = 200;

    public static void setMax(int max) {
        FirstThread.max = max;
    }

    /**
     * 重写了父类的方法
     * 线程的主方法(主体)
     */
    public void run() {
        System.out.println(max + "最大值 ");
        while (a < max) {
            a();
        }
        //获取当前线程
//        Thread.currentThread()
        //给线程创建名称
//        setName("布衣");
//        给线程创建优先级
//        setPriority(1);
//        守护线程 (随主线程启动而启动，主线消毁而消毁)
//        setDaemon(true);  jdk  gc(守护线程)
    }

    public static void main(String[] args) throws InterruptedException {
        //工作线程 ：
//        FirstThread f1 = new FirstThread();
//        f1.start();

        FirstThread f2 = new FirstThread();
        f2.start();

        f2.setMax(300);
        //结束线程方案
        f2.interrupt();
    }

    /**
     * 普通函数
     * 成功的案例是通过a < 100 在run方法时面的方法调用体里，通过次数来控制
     */
    public void a() {
        System.out.println(a++ + Thread.currentThread().getName() + "--->");
    }

}
